package it.csi.finregio.finreges.dto;

import java.io.Serializable;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;

public class Scheda implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 8189978864046831205L;
	private String idScheda;
	private String anno;
	private String numeroQuaderno;
	private String progressivo;
	private Stato stato;
	private SottoClassificazione sottoClassificazione;
	private Classificazione classificazione;
	private String noteClassificazione;
	private String titolo;
	private String noteTitolo;

	public String getIdScheda() {
		return idScheda;
	}

	public void setIdScheda(String idScheda) {
		this.idScheda = idScheda;
	}

	public String getAnno() {
		return anno;
	}

	public void setAnno(String anno) {
		this.anno = anno;
	}

	public String getNumeroQuaderno() {
		return numeroQuaderno;
	}

	public void setNumeroQuaderno(String numeroQuaderno) {
		this.numeroQuaderno = numeroQuaderno;
	}

	public String getProgressivo() {
		return progressivo;
	}

	public void setProgressivo(String progressivo) {
		this.progressivo = progressivo;
	}

	public Stato getStato() {
		return stato;
	}

	public void setStato(Stato stato) {
		this.stato = stato;
	}

	public SottoClassificazione getSottoClassificazione() {
		return sottoClassificazione;
	}

	public void setSottoClassificazione(
			SottoClassificazione sottoClassificazione) {
		this.sottoClassificazione = sottoClassificazione;
	}

	public String getNoteClassificazione() {
		return noteClassificazione;
	}

	public void setNoteClassificazione(String noteClassificazione) {
		this.noteClassificazione = noteClassificazione;
	}

	public String getTitolo() {
		return titolo;
	}

	public void setTitolo(String titolo) {
		this.titolo = titolo;
	}

	public String getNoteTitolo() {
		return noteTitolo;
	}

	public void setNoteTitolo(String noteTitolo) {
		this.noteTitolo = noteTitolo;
	}

	/**
	 * @see java.lang.Object#toString()
	 */
	public String toString() {
		return new ToStringBuilder(this).append("stato", this.stato).append(
				"idScheda", this.idScheda).append("sottoClassificazione",
				this.sottoClassificazione).append("titolo", this.titolo)
				.append("noteClassificazione", this.noteClassificazione)
				.append("progressivo", this.progressivo).append("noteTitolo",
						this.noteTitolo).append("numeroQuaderno",
						this.numeroQuaderno).append("anno", this.anno)
				.toString();
	}

	/**
	 * @see java.lang.Object#equals(Object)
	 */
	public boolean equals(Object object) {
		if (!(object instanceof Scheda)) {
			return false;
		}
		Scheda rhs = (Scheda) object;
		return new EqualsBuilder().appendSuper(super.equals(object)).append(
				this.noteClassificazione, rhs.noteClassificazione).append(
				this.idScheda, rhs.idScheda).append(this.noteTitolo,
				rhs.noteTitolo).append(this.sottoClassificazione,
				rhs.sottoClassificazione).append(this.titolo, rhs.titolo)
				.append(this.progressivo, rhs.progressivo).append(this.stato,
						rhs.stato).append(this.anno, rhs.anno).append(
						this.numeroQuaderno, rhs.numeroQuaderno).isEquals();
	}

	/**
	 * @see java.lang.Object#hashCode()
	 */
	public int hashCode() {
		return new HashCodeBuilder(469677215, 1183541049).appendSuper(
				super.hashCode()).append(this.noteClassificazione).append(
				this.idScheda).append(this.noteTitolo).append(
				this.sottoClassificazione).append(this.titolo).append(
				this.progressivo).append(this.stato).append(this.anno).append(
				this.numeroQuaderno).toHashCode();
	}

	public Classificazione getClassificazione() {
		return classificazione;
	}

	public void setClassificazione(Classificazione classificazione) {
		this.classificazione = classificazione;
	}
}
